/**
 * 常用的公共模块路由
 * 1 文件上传
 * 2 动态路由生成
 * @type {*|exports|module.exports}
 */
var express = require('express');
var router = express.Router();

var upload=require('../lib/upload.js');

let mcfg=require('../lib/mcfg.js');

let sql=require('../lib/sql.js');

let RoutePaths=mcfg.paths();

/**
 * 访问common根目录、默认输出所有可用的接口
 */
router.get('/', function (req, res) {
    res.render("api",{data:RoutePaths});
});


/**
 * 文件上传接口
 */
router.post('/upload',upload.array('file'),function(req, res, next){
    res.json(req.files)
});

/**
 * 动态生成路由接口
 */
RoutePaths.map((item)=>{
    router.all(item.path,(req,res,next)=>{
        let data,obj={};
        const {params,body,query}=req;
        if(item.queryKeys){
            item.queryKeys.map(function(k){
                if(query.hasOwnProperty(k)){
                    obj[k]=query[k];
                }
            })
        }

        data=Object.keys(body).length==0?Object.assign(params,obj):body;

        sql.query(mcfg.sql(item.key),data).then(function(result){
            res.json(result)
        });
    })
})

module.exports = router;